home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1986-10-29 | 8.4 KB | 279 lines |
- 100 REM'************************************************************************
- 110 REM' PC-CODE
- 120 REM'************************************************************************
- 130 REM'CODE PRACTICE PROGRAM FOR GWBASIC BY GARY BURRELL AND RICK WASILUK
- 140 DIM V(255),X(255),Y(255),Z(255),D(5),C$(255),L$(255)
- 150 CLS
- 160 T = 105:TT = 20'
- 170 PLAY "MFMLT105O3"' ** SET DEFAULT CODE SPEED **
- 180 C$(32) = "P12"' * *
- 190 C$(33) = ""
- 200 C$(34) = ""
- 210 C$(35) = ""
- 220 C$(36) = ""
- 230 C$(37) = ""
- 240 C$(38) = ""
- 250 C$(39) = ""
- 260 C$(40) = ""
- 270 C$(41) = ""
- 280 C$(42) = ""
- 290 C$(43) = ""
- 300 C$(44) = "L16GP48L16GP48L48GP48L48GP48L16GP48L16GP16"'* , *
- 310 C$(45) = "L16GP48L48GP48L48GP48L48GP48L16GP16"' * - *
- 320 C$(46) = "L48GP48L16GP48L48GP48L16GP48L48GP48L16GP16"'* . *
- 330 C$(47) = "L16GP48L48GP48L48GP48L16GP48L48GP16"' * / *
- 340 C$(48) = "L16GP48L16GP48L16GP48L16GP48L16GP16"' * 0 *
- 350 C$(49) = "L48GP48L16GP48L16GP48L16GP48L16GP16"' * 1 *
- 360 C$(50) = "L48GP48L48GP48L16GP48L16GP48L16GP16"' * 2 *
- 370 C$(51) = "L48GP48L48GP48L48GP48L16GP48L16GP16"' * 3 *
- 380 C$(52) = "L48GP48L48GP48L48GP48L48GP48L16GP16"' * 4 *
- 390 C$(53) = "L48GP48L48GP48L48GP48L48GP48L48GP16"' * 5 *
- 400 C$(54) = "L16GP48L48GP48L48GP48L48GP48L48GP16"' * 6 *
- 410 C$(55) = "L16GP48L16GP48L48GP48L48GP48L48GP16"' * 7 *
- 420 C$(56) = "L16GP48L16GP48L16GP48L48GP48L48GP16"' * 8 *
- 430 C$(57) = "L16GP48L16GP48L16GP48L16GP48L48GP16"' * 9 *
- 440 C$(58) = ""
- 450 C$(59) = ""
- 460 C$(60) = ""
- 470 C$(61) = ""
- 480 C$(62) = ""
- 490 C$(63) = "L48GP48L48GP48L16GP48L16GP48L48GP48L48GP16"'* ? *
- 500 C$(64) = ""
- 510 C$(65) = "L48GP48L16GP16"' * A *
- 520 C$(66) = "L16GP48L48GP48L48GP48L48GP16"' * B *
- 530 C$(67) = "L16GP48L48GP48L16GP48L48GP16"' * C *
- 540 C$(68) = "L16GP48L48GP48L48GP16"' * D *
- 550 C$(69) = "L48GP16"' * E *
- 560 C$(70) = "L48GP48L48GP48L16GP48L48GP16"' * F *
- 570 C$(71) = "L16GP48L16GP48L48GP16"' * G *
- 580 C$(72) = "L48GP48L48GP48L48GP48L48GP16"' * H *
- 590 C$(73) = "L48GP48L48GP16"' * I *
- 600 C$(74) = "L48GP48L16GP48L16GP48L16GP16"' * J *
- 610 C$(75) = "L16GP48L48GP48L16GP16"' * K *
- 620 C$(76) = "L48GP48L16GP48L48GP48L48GP16"' * L *
- 630 C$(77) = "L16GP48L16GP16"' * M *
- 640 C$(78) = "L16GP48L48GP16"' * N *
- 650 C$(79) = "L16GP48L16GP48L16GP16"' * O *
- 660 C$(80) = "L48GP48L16GP48L16GP48L48GP16"' * P *
- 670 C$(81) = "L16GP48L16GP48L48GP48L16GP16"' * Q *
- 680 C$(82) = "L48GP48L16GP48L48GP16"' * R *
- 690 C$(83) = "L48GP48L48GP48L48GP16"' * S *
- 700 C$(84) = "L16GP16"' * T *
- 710 C$(85) = "L48GP48L48GP48L16GP16"' * U *
- 720 C$(86) = "L48GP48L48GP48L48GP48L16GP16"' * V *
- 730 C$(87) = "L48GP48L16GP48L16GP16"' * W *
- 740 C$(88) = "L16GP48L48GP48L48GP48L16GP16"' * X *
- 750 C$(89) = "L16GP48L48GP48L16GP48L16GP16"' * Y *
- 760 C$(90) = "L16GP48L16GP48L48GP48L48GP16"' * Z *
- 770 PY$ = "PRESS ANY KEY"' * *
- 780 PR$ = "WHICH CHARACTER?"' * *
- 790 REM PLSO MATRIX
- 800 L$(48)="ZERO/"
- 810 L$(49)="ONE/"
- 820 L$(50)="TWO/"
- 830 L$(51)="THREE/"
- 840 L$(52)="FOUR/"
- 850 L$(53)="FIVE/"
- 860 L$(54)="SIX/"
- 870 L$(55)="SEVEN/"
- 880 L$(56)="EIGHT/"
- 890 L$(57)="NINE/"
- 900 L$(65)="ALFA/"
- 910 L$(66)="BRAVO/"
- 920 L$(67)="CHARLIE/"
- 930 L$(68)="DELTA/"
- 940 L$(69)="ECHO/"
- 950 L$(70)="FOXTROT/"
- 960 L$(71)="GOLF/"
- 970 L$(72)="HOTEL/"
- 980 L$(73)="INDIA/"
- 990 L$(74)="JULIETT/"
- 1000 L$(75)="KILO/"
- 1010 L$(76)="LIMA/"
- 1020 L$(77)="MIKE/"
- 1030 L$(78)="NOVEMBER/"
- 1040 L$(79)="OSCAR/"
- 1050 L$(80)="PAPA/"
- 1060 L$(81)="QUEBEC/"
- 1070 L$(82)="ROMEO/"
- 1080 L$(83)="SIERRA/"
- 1090 L$(84)="TANGO/"
- 1100 L$(85)="UNIFORM/"
- 1110 L$(86)="VICTOR/"
- 1120 L$(87)="WHISKEY/"
- 1130 L$(88)="XRAY/"
- 1140 L$(89)="YANKEE/"
- 1150 L$(90)="ZULU/"
- 1160 CLS
- 1170 PRINT:PRINT:PRINT:PRINT
- 1180 PRINT " PC-CODE MORSE CODE TRAINING PROGRAM"
- 1190 PRINT:PRINT:PRINT
- 1200 PRINT "THIS PROGRAM IS DESIGNED TO GENERATE MORSE CODE FROM ANY OF THREE MODES."
- 1210 PRINT "MANUAL INPUT MODE, RANDOM FIVE-CHARACTER CODE GROUPS AND RANDOM"
- 1220 PRINT "PLSO (PLAIN LANGUAGE SPELLED OUT) MODE. A HARD COPY OF GENERARTED "
- 1230 PRINT "CODE GROUPS CAN BE PROVIDED AND THE CODE GROUPS CAN BE SAVED AND/OR"
- 1240 PRINT "MERGED FOR LATER USE AND OUTPUT."
- 1250 PRINT:PRINT "PROVIDE APPROPRIATE RESPONSE TO EACH QUESTION AS REQUIRED AND"
- 1260 PRINT "USE CAPITAL LETTERS ONLY FOR ALL KEYBOARD ENTRIES. MAX SPEED 50 WPM"
- 1270 PRINT:PRINT
- 1280 PRINT"ENTER ANY KEY TO CONTINUE"
- 1290 S$=INKEY$:IF S$="" THEN 1290
- 1300 CLS:GOTO 1350
- 1310 CLS
- 1320 PRINT"ENTER ANY KEY TO CONTINUE. ENTER Q TO QUIT."
- 1330 S$=INKEY$:IF S$="" THEN 1330
- 1340 IF S$="Q" THEN END
- 1350 PRINT"ENTER WPM";:INPUT F
- 1360 T=(F+1)*5:T$="T"+STR$(T):PLAY T$
- 1370 PRINT: PRINT
- 1380 PRINT "MODES OF OPERATION:"
- 1390 PRINT "1 = MANUAL INPUT"
- 1400 PRINT "2 = RANDOM FIVE-CHARACTER CODE GROUPS"
- 1410 PRINT "3 = RANDOM PLSO WORD GROUPS"
- 1420 PRINT "4 = MERGE FILES"
- 1430 PRINT "ENTER DESIRED MODE (ONE ONLY):";: INPUT M
- 1440 IF M=1 THEN 1490
- 1450 IF M=2 THEN 1770
- 1460 IF M=3 THEN 2030
- 1470 IF M=4 THEN 2310
- 1480 GOTO 1430
- 1490 I=0: CLS
- 1500 PRINT "MANUAL INPUT MODE: SELECT YOUR OWN DATA AND ENTER AS DESIRED:"
- 1510 PRINT "WHEN ALL MANUAL INPUT IS COMPLETE, PRESS -ESC- TO CONTINUE"
- 1520 PRINT: PRINT:
- 1530 U$=INKEY$: IF U$="" THEN 1530
- 1540 C=ASC(U$): PRINT U$;
- 1550 I=I+1
- 1560 GOSUB 1580
- 1570 IF C=27 THEN 2430 ELSE 1530
- 1580 REM SUBROUTINE CHARACTER INPUT
- 1590 REM "C = CHARACTER I = POINTER"
- 1600 IF I < 256 THEN V(I)=C ELSE 1620
- 1610 RETURN
- 1620 IF I < 512 THEN X(I-256)=C ELSE 1640
- 1630 RETURN
- 1640 IF I < 768 THEN Y(I-512)=C ELSE 1660
- 1650 RETURN
- 1660 IF I < 1023 THEN Z(I-768)=C ELSE Z(255)=27
- 1670 PRINT "OVERFLOW":RETURN
- 1680 IF I < 256 THEN C=V(I) ELSE 1710
- 1690 REM SUBROUTINE "CHARACTER OUTPUT" C=CHARACTER, I=POINTER
- 1700 RETURN
- 1710 IF I < 512 THEN C=X(I-256) ELSE 1730
- 1720 RETURN
- 1730 IF I < 768 THEN C=Y(I-512) ELSE 1750
- 1740 RETURN
- 1750 IF I < 1023 THEN C=Z(I-768) ELSE C=27
- 1760 PRINT "OVERFLOW": RETURN
- 1770 CLS
- 1780 REM "RANDOM CODE GROUPS"
- 1790 I=0
- 1800 PRINT "RANDOM FIVE-CHARACTER CODE GROUP MODE";:PRINT:PRINT
- 1810 PRINT "ENTER RANDOM NUMBER SEED (-32768 TO 32767)";:INPUT G:RANDOMIZE G
- 1820 PRINT "ENTER NUMBER OF CODE GROUPS DESIRED";: INPUT E
- 1830 PRINT "SELECT CODE GROUP FORMAT:"
- 1840 PRINT " 1 = LETTERS ONLY"
- 1850 PRINT " 2 = LETTERS & NUMBERS"
- 1860 INPUT F
- 1870 IF F=1 THEN 1890
- 1880 IF F=2 THEN 1890 ELSE 1830
- 1890 FOR J1=1 TO E
- 1900 FOR J2=1 TO 5
- 1910 I=I+1
- 1920 IF F=1 THEN C=INT(25*RND)+65
- 1930 IF F=2 THEN C=INT(35*RND)+55
- 1940 IF C<65 THEN C=C-7
- 1950 GOSUB 1580
- 1960 NEXT J2
- 1970 I=I+1: C=32
- 1980 GOSUB 1580
- 1990 NEXT J1
- 2000 I=I+1: C=27
- 2010 GOSUB 1580
- 2020 GOTO 2430
- 2030 CLS: I=0
- 2040 REM "PLSO CODE GROUPS"
- 2050 PRINT "RANDOM PLSO WORD GROUPS MODE";:PRINT:PRINT
- 2060 PRINT "ENTER RANDOM NUMBER SEED(FROM-32768 TO +32767)";:INPUT G:RANDOMIZE G
- 2070 PRINT "ENTER NUMBER OF PLSO WORD GROUPS DESIRED:";: INPUT E
- 2080 PRINT "SELECT CODE GROUP FORMAT:"
- 2090 PRINT " 1 = LETTERS ONLY"
- 2100 PRINT " 2 = LETTERS & NUMBERS"
- 2110 INPUT F
- 2120 IF F=1 THEN 2140
- 2130 IF F=2 THEN 2140 ELSE 2080
- 2140 FOR J1=1 TO E
- 2150 IF F=1 THEN K=INT(25*RND)+65
- 2160 IF F=2 THEN K=INT(35*RND)+55
- 2170 IF K < 65 THEN K=K-7
- 2180 GOSUB 2250
- 2190 I=I+1: C=32
- 2200 GOSUB 1580
- 2210 NEXT J1
- 2220 I=I+1: C=27
- 2230 GOSUB 1580
- 2240 GOTO 2430
- 2250 J3=1
- 2260 REM "PLSO CHARACTER INPUT"
- 2270 R$=MID$(L$(K),J3,1): C=ASC(R$)
- 2280 IF R$="/" THEN RETURN
- 2290 I=I+1:GOSUB 1580
- 2300 J3=J3+1: GOTO 2270
- 2310 REM MERGE FILES
- 2320 I=1
- 2330 CLS:PRINT"MERGE FILES":PRINT"ENTER 'DONE' TO COMPLETE MERGE"
- 2340 PRINT"ENTER FILE NAME";:INPUT N$
- 2350 IF N$="DONE"THEN 2430
- 2360 OPEN "I",#1,N$
- 2370 I=I-1
- 2380 I=I+1
- 2390 INPUT #1,C
- 2400 GOSUB 1580
- 2410 IF C=27 THEN 2420 ELSE 2380
- 2420 CLOSE #1:GOTO 2330
- 2430 REM "SAVE/DISPLAY FILE"
- 2440 CLS
- 2450 PRINT "DO YOU WANT TO DISPLAY FILE: Y=YES N=NO";: INPUT N$
- 2460 IF N$ = "N" THEN 2550
- 2470 IF N$ = "Y" THEN 2480 ELSE 2450
- 2480 I=0:C5=0
- 2490 I=I+1: GOSUB 1680
- 2500 IF C=27 THEN 2550
- 2510 PRINT CHR$(C);
- 2520 IF C=32 THEN C5=C5+1
- 2530 IF C5=8 THEN PRINT CHR$(13):C5=0
- 2540 GOTO 2490
- 2550 PRINT:PRINT "DO YOU WANT A HARD-COPY OF THE DATA? Y=YES N=NO "
- 2560 PRINT "IF -YES- IS YOUR PRINTER ON-LINE AND READY TO PRINT";:INPUT N$
- 2570 IF N$ = "N" THEN 2650
- 2580 I=0:C5=0
- 2590 I=I+1: GOSUB 1680
- 2600 IF C=27 THEN 2650
- 2610 LPRINT CHR$(C);
- 2620 IF C=32 THEN C5=C5+1
- 2630 IF C5=8 THEN LPRINT CHR$(13):C5=0
- 2640 GOTO 2590
- 2650 PRINT "DO YOU WANT TO SAVE FILE: Y=YES N=NO";: INPUT N$
- 2660 IF N$ = "N" THEN 2750
- 2670 IF N$ = "Y" THEN 2680 ELSE 2650
- 2680 PRINT "ENTER FILE NAME";: INPUT N$
- 2690 I=0
- 2700 OPEN "O", #1, N$
- 2710 I=I+1: GOSUB 1680
- 2720 PRINT #1, C
- 2730 IF C=27 THEN 2740 ELSE 2710
- 2740 CLOSE #1
- 2750 PRINT "DO YOU WANT TONE OUTPUT: Y=YES N=NO";: INPUT N$
- 2760 IF N$ = "N" THEN 1310
- 2770 IF N$ = "Y" THEN 2780 ELSE 2750
- 2780 REM "TONE OUTPUT"
- 2790 PRINT:PRINT:PRINT " STAND BY TO COPY"
- 2800 FOR I=1 TO 2000
- 2810 NEXT I
- 2820 I=0
- 2830 I=I+1: GOSUB 1680
- 2840 IF C=27 THEN 1310
- 2850 PLAY C$(C)
- 2860 GOTO 2830
- 2870 END
-